﻿//using Framework.Common.Cache;
//using Framework.Common.Configs;
//using ServiceStack.Redis;
//using System;
//using System.Collections.Generic;
//using System.ComponentModel.Composition;
//using System.Linq;
//using System.Text;

//namespace Framework.Cache.Redis
//{
//    [Export(typeof(ICache))]
//    public class RedisCache : ICache
//    {
//        public int Count
//        {
//            get
//            {
//                using (var client = ClientManager.GetReadWriteClient())
//                {
//                    return client.GetAllKeys().Count;
//                }
//            }
//        }

//        public bool Add<T>(string key, T value)
//        {
//            using (var client = ClientManager.GetReadWriteClient())
//            {
//                return client.Add(key, value);
//            }
//        }

//        public bool Add<T>(string key, T value, DateTime expiredTime)
//        {
//            using (var client = ClientManager.GetReadWriteClient())
//            {
//                return client.Add(key, value, expiredTime);
//            }
//        }

//        public bool Contains(string key)
//        {
//            using (var client = ClientManager.GetReadOnlyClient())
//            {
//                return client.ContainsKey(key);
//            }
//        }

//        public void Flush()
//        {
//            using (var client = ClientManager.GetReadWriteClient())
//            {
//                client.FlushAll();
//            }
//        }

//        public object Get(string key)
//        {
//            using (var client = ClientManager.GetReadOnlyClient())
//            {
//                return client.Get<object>(key);
//            }
//        }

//        public T Get<T>(string key)
//        {
//            using (var client = ClientManager.GetReadOnlyClient())
//            {
//                return client.Get<T>(key);
//            }
//        }

//        public bool Remove(string key)
//        {
//            using (var client = ClientManager.GetReadWriteClient())
//            {
//                return client.Remove(key);
//            }
//        }


//        public bool Set<T>(string key, T value)
//        {
//            throw new NotImplementedException();
//        }

//        public bool Set<T>(string key, T value, DateTime expiredTime)
//        {
//            throw new NotImplementedException();
//        }

//        public bool MultiSet(IDictionary<string, object> dict)
//        {
//            using (var client = ClientManager.GetReadWriteClient())
//            {
//                 client.SetAll(dict);
//                 return true;
//            }
//        }

//        public bool MultiSet<T>(IDictionary<string, T> dict)
//        {
//            using (var client = ClientManager.GetReadWriteClient())
//            {
//                client.SetAll(dict);
//                return true;
//            }
//        }

//        public IDictionary<string, object> MultiGet(IEnumerable<string> keys)
//        {
//            using (var client = ClientManager.GetReadWriteClient())
//            {
//                return client.GetAll<Object>(keys);
//            }
//        }

//        public IDictionary<string, T> MultiGet<T>(IEnumerable<string> keys)
//        {
//            using (var client = ClientManager.GetReadWriteClient())
//            {
//                return client.GetAll<T>(keys);
//            }
//        }
//    }
//}
